In an environment for centralized management of desktops, multiple client machines receive access to or execute a computing environment based on copies of a single “golden master” desktop disk image. A machine disk image or desktop disk image may be an image of an operating system (OS), and may include sets of applications and customizations representing a working environment for a user. In some environments, a machine image includes files used to execute a virtual machine that then executes an operating system or other user applications. In other environments, a desktop image includes files used to execute an operating system or other user application, and either a physical machine or a virtual machine may execute the desktop image. An image of a machine or desktop may be generally referred to as a disk image.
One aspect of desktop administration is the need to apply changes to either the operating system or to installed applications within the desktop environment, for example, to perform upgrades or other maintenance. In addition, it may be necessary to modify settings to re-align with changes in company policy and to mitigate against security threats. In the case of centralized administration of desktop disk images, common sets of changes, or patches, are typically applied.
In some embodiments, each user has, in effect, their own independent machine image. In one of these embodiments, a change requested by a user to a base disk image is stored in a delta file associated with that user and the combination of the base disk image and one or more delta files associated with that user is referred to as the user's machine disk image. In another of these embodiments, machine disk images are patched individually. This is typically expensive in terms of time taken, as typically each machine is booted, patched and then shut down and re-started. Additionally, this may be expensive in terms of disk usage, as patching will lead to changes in the individual delta files, rather than to changes in the common base disk image. In these embodiments, changes due to a patch are typically applied to the delta files rather than the base disk image, thus ballooning the size of the delta images and increasing storage requirements for the deltas.
In one alternative system, delta disks—which may be disks storing one or more delta files associated with a user—are patched individually and then an external process searches for blocks common to more than one image or delta, and replaces the common blocks with a reference to a single common block. This may reduce the disk storage requirements, but at the cost of additional complexity and possibly runtime overhead. This “scavenging” approach is typically applied at the block level and does not typically identify shared data smaller than a block, or where the same file exists in multiple disk images, but with a different block-level layout. Typically, this approach is provided in environments using Storage Area Networks (SAN).
In other typical environments, a patch is applied to a common disk image and any delta disks are discarded. In one of these embodiments, for example, a system discards the delta image each time the machine is powered off. Files (such as user-generated documents) are usually stored on an external disk, so these are not typically lost with the discarded delta images; however, users are typically not able to permanently install applications or other resources to their disk images. Therefore, in some of these embodiments, discarding deltas whenever a patch is applied may lead to a more limited user experience.